#include <iostream>
#include "httplib.h"

void Hello(const httplib::Request &req, httplib::Response &res)
{
    res.set_content("Hello HttpLib!", "text/plain"); // 设置响应内容
    res.status = 200; // 设置状态码
}

void Number(const httplib::Request &req, httplib::Response &res)
{
    auto num = req.matches[1]; // 获取请求中的 [数字]
    res.set_content(num, "text/plain");
    res.status = 200;
}

void Multipart(const httplib::Request &req, httplib::Response &res)
{
    auto ret = req.has_file("file"); // 查找文件是否存在
    if(ret == false)
    {
        std::cout << "not find file" << std::endl;
        res.status = 400;
        return;
    }

    const auto& file = req.get_file_value("file");
    res.body.clear(); // 清空响应内容
    res.body = file.filename; // 请求文件名
    res.body += "\n"; // 分隔符
    res.body += file.content; // 请求文件内容
    res.set_header("Content-Type", "text/plain");
    res.status = 200;
    return;
}

int main()
{
    httplib::Server server;
    server.Get("/hello", Hello);
    server.Get(R"(/numbers/(\d+))", Number);
    server.Post("/multipart", Multipart);

    server.listen("0.0.0.0", 8888);

    return 0;
}